--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/backend/test_pip_rns_integration.py master (b89dc9e6) Text, 3.56 KB
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""Tests for optional pip-rns / rngit dependency helpers."""
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72import T7ee787importlibT7ee787.T7ee787util
Tff7b72import T7ee787os
Tff7b72import T7ee787subprocess
Tff7b72import T7ee787sys
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path
Te6edf3_REPO Tff7b72= Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparentsTb4b4b4[T79c0ff2Tb4b4b4]
Te6edf3_SCRIPT Tff7b72= Te6edf3_REPO Tff7b72/ Ta5d6ff"Ta5d6ffscriptsTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffpip-rns-deps.shTa5d6ff"
Te6edf3_ALIASES Tff7b72= Te6edf3_REPO Tff7b72/ Ta5d6ff"Ta5d6ffscriptsTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffpip-rnsTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffaliasesTa5d6ff"
Te6edf3_REMOTES Tff7b72= Te6edf3_REPO Tff7b72/ Ta5d6ff"Ta5d6ffscriptsTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffpip_rns_remotes.pyTa5d6ff"
Te6edf3_FETCH Tff7b72= Te6edf3_REPO Tff7b72/ Ta5d6ff"Ta5d6ffscriptsTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffbuildTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6fffetch_reticulum_manual.pyTa5d6ff"
Tff7b72def Td2a8ff_load_moduleTb4b4b4(Te6edf3pathTb4b4b4: Te6edf3PathTb4b4b4, Te6edf3nameTb4b4b4: Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3spec Tff7b72= Te6edf3importlibTff7b72.Td2a8ffutilTff7b72.Td2a8ffspec_from_file_locationTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3pathTb4b4b4)
Tff7b72assert Te6edf3spec Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3specTff7b72.Td2a8ffloader Tff7b72is Tff7b72not Tff7b72None
Te6edf3module Tff7b72= Te6edf3importlibTff7b72.Td2a8ffutilTff7b72.Td2a8ffmodule_from_specTb4b4b4(Te6edf3specTb4b4b4)
Te6edf3sysTff7b72.Td2a8ffmodulesTb4b4b4[Te6edf3nameTb4b4b4] Tff7b72= Te6edf3module
Te6edf3specTff7b72.Td2a8ffloaderTff7b72.Td2a8ffexec_moduleTb4b4b4(Te6edf3moduleTb4b4b4)
Tff7b72return Te6edf3module
Tff7b72def Td2a8fftest_pip_rns_deps_script_exists_and_is_executableTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3_SCRIPTTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3osTff7b72.Td2a8ffaccessTb4b4b4(Te6edf3_SCRIPTTb4b4b4, Te6edf3osTff7b72.Td2a8ffX_OKTb4b4b4)
Tff7b72def Td2a8fftest_pip_rns_deps_bash_syntaxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3subprocessTff7b72.Td2a8ffrunTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ffbashTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff-nTa5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3_SCRIPTTb4b4b4)Tb4b4b4]Tb4b4b4, Te6edf3checkTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72def Td2a8fftest_pip_rns_deps_helpTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3proc Tff7b72= Te6edf3subprocessTff7b72.Td2a8ffrunTb4b4b4(
Tb4b4b4[Ta5d6ff"Ta5d6ffbashTa5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3_SCRIPTTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff--helpTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3capture_outputTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3textTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3checkTff7b72=Tff7b72FalseTb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3procTff7b72.Td2a8ffreturncode Tff7b72== T79c0ff0
Tff7b72assert Ta5d6ff"Ta5d6ffpip-rnsTa5d6ff" Tff7b72in Te6edf3procTff7b72.Td2a8ffstdout
Tff7b72def Td2a8fftest_pip_rns_deps_dry_runTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3proc Tff7b72= Te6edf3subprocessTff7b72.Td2a8ffrunTb4b4b4(
Tb4b4b4[Ta5d6ff"Ta5d6ffbashTa5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3_SCRIPTTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff--dry-runTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--skip-ensureTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3capture_outputTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3textTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3checkTff7b72=Tff7b72FalseTb4b4b4,
Te6edf3cwdTff7b72=Tffa657strTb4b4b4(Te6edf3_REPOTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3procTff7b72.Td2a8ffreturncode Tff7b72== T79c0ff0
Te6edf3out Tff7b72= Te6edf3procTff7b72.Td2a8ffstdout Tff7b72+ Te6edf3procTff7b72.Td2a8ffstderr
Tff7b72assert Ta5d6ff"Ta5d6ffpip-rns install --uv rnsTa5d6ff" Tff7b72in Te6edf3out
Tff7b72assert Ta5d6ff"Ta5d6ffpip-rns install --uv lxmfTa5d6ff" Tff7b72in Te6edf3out
Tff7b72assert Ta5d6ff"Ta5d6ffpip-rns install --uv lxstTa5d6ff" Tff7b72in Te6edf3out
Tff7b72def Td2a8fftest_aliases_file_has_markqvist_remotesTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3text Tff7b72= Te6edf3_ALIASESTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ff7649a50d84610232d1416b41d2896aff/reticulum/reticulumTa5d6ff" Tff7b72in Te6edf3text
Tff7b72assert Ta5d6ff"Ta5d6ff7649a50d84610232d1416b41d2896aff/reticulum/lxmfTa5d6ff" Tff7b72in Te6edf3text
Tff7b72assert Ta5d6ff"Ta5d6ff7649a50d84610232d1416b41d2896aff/reticulum/lxstTa5d6ff" Tff7b72in Te6edf3text
Tff7b72assert Ta5d6ff"Ta5d6ff7649a50d84610232d1416b41d2896aff/reticulum/websiteTa5d6ff" Tff7b72in Te6edf3text
Tff7b72def Td2a8fftest_pip_rns_remotes_helpersTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3remotes Tff7b72= Te6edf3_load_moduleTb4b4b4(Te6edf3_REMOTESTb4b4b4, Ta5d6ff"Ta5d6ffpip_rns_remotes_under_testTa5d6ff"Tb4b4b4)
Te6edf3aliases Tff7b72= Te6edf3remotesTff7b72.Td2a8ffparse_aliasesTb4b4b4(Te6edf3_ALIASESTb4b4b4)
Tff7b72assert Te6edf3aliasesTb4b4b4[Ta5d6ff"Ta5d6ffrnsTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ff/reticulum/reticulumTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3remotesTff7b72.Td2a8ffremote_urlTb4b4b4(Ta5d6ff"Ta5d6fflxmfTa5d6ff"Tb4b4b4, Te6edf3aliasesTb4b4b4)Tff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ffrns://Ta5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3remotesTff7b72.Td2a8ffwebsite_docs_sourceTb4b4b4(Te6edf3aliasesTb4b4b4)Tff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ffrns://Ta5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ffwebsiteTa5d6ff" Tff7b72in Te6edf3remotesTff7b72.Td2a8ffwebsite_docs_sourceTb4b4b4(Te6edf3aliasesTb4b4b4)
Tff7b72def Td2a8fftest_fetch_manual_from_local_docs_treeTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3fetch Tff7b72= Te6edf3_load_moduleTb4b4b4(Te6edf3_FETCHTb4b4b4, Ta5d6ff"Ta5d6fffetch_reticulum_manual_under_testTa5d6ff"Tb4b4b4)
Te6edf3src Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffwebsiteTa5d6ff"
Te6edf3docs Tff7b72= Te6edf3src Tff7b72/ Ta5d6ff"Ta5d6ffdocsTa5d6ff"
Te6edf3docsTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4)
Tb4b4b4(Te6edf3docs Tff7b72/ Ta5d6ff"Ta5d6ffindex.htmlTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_textTb4b4b4(Ta5d6ff"Ta5d6ff<html>ok</html>Ta5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tb4b4b4(Te6edf3docs Tff7b72/ Ta5d6ff"Ta5d6ffmanualTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Tb4b4b4(Te6edf3docs Tff7b72/ Ta5d6ff"Ta5d6ffmanualTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffindex.htmlTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_textTb4b4b4(Ta5d6ff"Ta5d6ff<html>m</html>Ta5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tb4b4b4(Te6edf3docs Tff7b72/ Ta5d6ff"Ta5d6ffmanual.pdfTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_bytesTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ff%Ta5d6ffPDFTa5d6ff"Tb4b4b4)
Te6edf3dest Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffoutTa5d6ff"
Te6edf3manifest Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffmanifest.jsonTa5d6ff"
Te6edf3count Tff7b72= Te6edf3fetchTff7b72.Td2a8fffetch_manualTb4b4b4(
Te6edf3sourcesTff7b72=Tb4b4b4[Tffa657strTb4b4b4(Te6edf3srcTb4b4b4)Tb4b4b4]Tb4b4b4,
Te6edf3destTff7b72=Te6edf3destTb4b4b4,
Te6edf3forceTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3include_pdfTff7b72=Tff7b72FalseTb4b4b4,
Te6edf3manifest_pathTff7b72=Te6edf3manifestTb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3count Tff7b72== T79c0ff2
Tff7b72assert Tb4b4b4(Te6edf3dest Tff7b72/ Ta5d6ff"Ta5d6ffindex.htmlTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)
Tff7b72assert Tb4b4b4(Te6edf3dest Tff7b72/ Ta5d6ff"Ta5d6ffmanualTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffindex.htmlTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)
Tff7b72assert Tff7b72not Tb4b4b4(Te6edf3dest Tff7b72/ Ta5d6ff"Ta5d6ffmanual.pdfTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffexistsTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3manifestTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8fftest_taskfile_has_pip_rns_targetsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3text Tff7b72= Tb4b4b4(Te6edf3_REPO Tff7b72/ Ta5d6ff"Ta5d6ffTaskfile.ymlTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ffdeps:backend:rns:Ta5d6ff" Tff7b72in Te6edf3text
Tff7b72assert Ta5d6ff"Ta5d6ffdocs:rns:Ta5d6ff" Tff7b72in Te6edf3text
Tff7b72assert Ta5d6ff"Ta5d6ffscripts/pip-rns-deps.shTa5d6ff" Tff7b72in Te6edf3text
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────